let routes = [
  {
    path: '/',
    component: 'layout/layout',
    redirect: { name: 'home' },
    children: [
      {
        meta: { title: '后台首页'},
        component: 'home/home',
      },
      {
        meta: { title: '相册管理'},
        component: 'album/album',
      },
      {
        meta: { title: '商品列表'},
        component: 'shop/goods/list',
      },
    ],
  },
  {
    meta: { title: '登陆'},
    component: 'login/login',
  },
  {
    path: '*',
    meta: { title: '404'},
    component: 'mismatch/404',
  },
]

function getRoutes() {
  // 生成路由
  renderRoutes(routes)
  return routes
}
// 生成路由的方法
function renderRoutes(arr) {
  arr.forEach((item) => {
    // 如果没有组件就中断执行
    if (!item.component) return
    // 存在组件就开始拼接
    let newStr = removeDuplicates(item.component)
    // 修改path
    item.path = item.path || `/${newStr}`
    // console.log(newStr);
    item.name = item.name || newStr.replace(/\//g, '_')
    let componentText = import(`../../views/${item.component}.vue`)
    item.component = () => componentText
    // 递归二级路由
    if (item.children && item.children.length > 0) {
      renderRoutes(item.children)
    }
  })
}
// 去除重复的路由名字字段
function removeDuplicates (str) {
    // 例如把 home/home切割成 home  把shop/goods/list 便不动
    // 获取/在字符中的出现次数如果出现2次不需要处理
    let index = str.indexOf('/') // 指定字符出现的位置
    let num = 0 // 统计次数
    while( index !== -1) {// 不等于-1意思是 循环终止条件没有
      //  console.log(index); // 出现的位置
       num ++
       index = str.indexOf('/',index +1 ) // 出现一次就从当前在王下来查找
       // 切割
    }
    if(num !== 2){ // 只切割出现一次的字符串 只切割 切割前字段和后字段相同的字符串
      // 存新的字符串下标‘ 保持健壮的写法
      
      let index = str.indexOf('/')
      // 前半部分
      let firstStr = str.substr(index+1,str.length)
      // 后半部分
      let lastStr = str.substr(index+1)
     
      if(firstStr === lastStr){
        str = firstStr // 等于就取前面的当成路径
      }else {
        return str //不等于就返回完整路径
      }
   }
    return str
    
}
export default getRoutes()
